package com.banca2.bracketplant.widget;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

/*********************************************************************<br>
 * CommonAdapter.java												 *<br>
 * 功 能：	通用适配器封装，以简化ListView开发，T为数据的类型						 *<br>
 * 		getView(...)方法尚未实现										 *<br>
 * 																	 *<br>
 *  Ver   变更日期        负责人  					变更内容                        			 *<br>
 * ───────────────────────────────────────────────────────────────── *<br>
 * V0.01 2015-6-7	ZQ      				    创建					 *<br>
 * 																	 *<br>
 * Copyright (c) 2015 StarFollower Corporation. All rights reserved. *<br>
 *┌─────────────────────────────────────────────────────────────────┐*<br>
 *│　此技术信息为本团队机密信息，未经本团队书面同意禁止向第三方披露．　				│*<br>
 *│　版权所有：StarFollower　　　　　　　　　　                     　					│*<br>
 *└─────────────────────────────────────────────────────────────────┘*<br>
 *********************************************************************/
public abstract class CommonAdapter<T> extends BaseAdapter {
	
	/**
	 * 上下文环境
	 * @author ZQ
	 */
	protected Context mContext;

	/**
	 * ListView的数据
	 * @author ZQ
	 */
	protected List<T> mData;

	/**
	 * 项视图的布局ID
	 * @author ZQ
	 */
	protected int mItemLayoutId;
	
	/**
	 * @param context 上下文环境
	 * @param mData ListView的数据
	 * @param itemLayoutId 项视图的布局ID
	 *
	 * @author ZQ
	 */
	public CommonAdapter(Context context, List<T> mData, int itemLayoutId) {
		this.mContext = context;
		this.mData = mData;
		this.mItemLayoutId = itemLayoutId;
	}

	@Override
	public int getCount() {
		return mData.size();
	}

	@Override
	public T getItem(int position) {
		return mData.get(position);
	}

	@Override
	public long getItemId(int position) {
		return position;
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		final ViewHolder viewHolder = ViewHolder.get(mContext, convertView,
				parent, mItemLayoutId, position);
		convert(viewHolder, getItem(position));
		return viewHolder.getConvertView();
	}

	/**
	 * 修改项视图的内容
	 * @param viewHolder 列表项子视图的持有者
	 * @param data 列表项的数据
	 *
	 * @author ZQ
	 */
	public abstract void convert(ViewHolder viewHolder, T data);

}
